﻿Imports Lourdes.BackEnd.BC
Imports Lourdes.BackEnd.View
Imports Infragistics.Win.UltraWinGrid
Imports Lourdes.BackEnd.Enums
Imports Lourdes.BackEnd

Public Class frmGenerarRemito
  Private _FacturaId As Integer
  Private _ViewFacturacion As vFacturacion
  Private _ViewRemito As vRemito

  Private Sub CargarGrillaLineasDocumento()
    With grdLineasDocumento
      .DataSource = New vLstProductos
      .DataBind()

      .DataSource = _ViewFacturacion.Productos
      .DataBind()

      For Each oRow As UltraGridRow In grdLineasDocumento.Rows
        oRow.Cells.Item("Seleccionar").Value = False
      Next
    End With
  End Sub

  Private Sub ControlsToViewRemito()
    Try

      With _ViewFacturacion.Cabecera.FacturaBase
        _ViewRemito.Cabecera.FechaDeEntrega = Now
        _ViewRemito.Cabecera.ClientePerApellido = .ClientePerApellido
        _ViewRemito.Cabecera.ClientePerNombre = .ClientePerNombre
        _ViewRemito.Cabecera.ClientePerId = .ClientePerId
      End With
      _ViewRemito.Productos = GetProductosSeleccionados()

    Catch ex As Exception
      Throw ex
    End Try
  End Sub

  Private Function GetProductosSeleccionados() As vLstProductos
    Dim ProductosSel As New vLstProductos
    Dim rowSelected As UltraGridRow

    With grdLineasDocumento
      For Each rowSelected In .Rows
        If rowSelected.Cells.Item("Seleccionar").Value Then
          ProductosSel.Add(CType(rowSelected.ListObject(), vProducto))
        End If
      Next
    End With

    Return ProductosSel
  End Function


  Private Sub Save()
    Dim intRemitoId As Integer
    ControlsToViewRemito()
    If _ViewRemito.Productos.Count > 0 Then
      intRemitoId = _ViewRemito.Insert()
      UcStatusBar1.MostrarMensajeVerde("Se a generado el Remito Nº: " & intRemitoId.ToString & ".")
      If MessageBox.Show("¿Desea Imprimir el Remito?", "Verificar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
        Utils.ShowReport(Enums.ReporteTipos.Remito, "DocRemitoId", intRemitoId.ToString, Me)
      End If
    Else
      UcStatusBar1.MostrarMensajeRojo("Debe seleccionar al menos un producto para generar el remito.")
    End If
  End Sub

  Public Sub New(pFacturaId As Integer)

    ' Llamada necesaria para el diseñador.
    InitializeComponent()

    ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
    _FacturaId = pFacturaId
    _ViewFacturacion = New vFacturacion
    _ViewFacturacion.getvFacturacion(pFacturaId)
    _ViewRemito = New vRemito
  End Sub

  Private Sub frmGenerarRemito_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    CargarGrillaLineasDocumento()
  End Sub

  Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click
    If MsgBox("¿Desea salir de Generación de Remito?", vbYesNo, "Salir de Generación de Remito") = vbYes Then
      Me.Dispose()
      Me.Close()
    End If
  End Sub

  Private Sub frmGenerarRemito_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    Select Case e.KeyCode
      Case Keys.Escape
        btnCancelar_Click(Nothing, Nothing)
      Case Keys.F2
        btnGuardar_Click(Nothing, Nothing)
      Case Keys.F6
        btnImprimir_Click(Nothing, Nothing)
    End Select

  End Sub

  Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click
    Save()
  End Sub

  Private Sub btnImprimir_Click(sender As System.Object, e As System.EventArgs)

  End Sub
End Class